A video decoder receives encoded video data and decodes and/or decompresses the video data. The decoded video data comprises a series of pictures. A display device displays the pictures. The pictures comprise a two-dimensional grid of pixels. The display device displays the pixels of each picture in real time at a constant rate. In contrast, the rate of decoding can vary considerably for different video data. Accordingly, the video decoder writes the decoded pictures in a frame buffer.
Among other things, a display engine is synchronized with the display device and provides the appropriate pixels to the display device for display. The display engine determines the frame buffer address of the appropriate pixels, in order to provide the appropriate pixels to the display device. The address of the appropriate pixels is dependent on the manner that the video decoder writes the picture to the frame buffer.
Characteristics that characterize the manner that the video decoder writes the picture to the frame buffer include the packing of luma and chroma pixels, the linearity that the picture is stored and the spatial relationship between the luma and chroma pixels are factors. The foregoing characteristics are usually determined by the native format and the encoding format of the source video data.
The luma and chroma pixels of a picture can either be packed together or separately. The chroma pixels include red difference pixel Cr, and blue difference pixel Cb. In macroblock format, the luma pixels are packed in one array, while both chroma pixels Cr/Cb are packed together in another array. In planar format, the luma pixels are packed in one array, the Cr pixels are packed in a second array, and the Cb pixels are packed in a third array. In packed YUV, the luma pixels and both the chroma Cr/Cb pixels are packed together in a single array.
The video decoder does not necessarily store the frame in a linear manner. In planar & packed YUV formats, the video decoder stores pictures in left to right and top to bottom order in the memory. However, in MPEG 1, 2, and 4, and DV-25 formats, pictures are stored in the frame buffer in a macroblock format. In the macroblock format, the pixels of the frame are divided into two dimensional blocks. The video decoder stores the two dimensional blocks in consecutive memory locations.
Additionally, the spatial relationship of chroma pixels to luma pixels can differ among the many standards. Standards defining the spatial relationship of the chroma pixels to luma pixels include MPEG 4:2:0, MPEG 4:2:2, DV-25 4:1:1, and DV-25 4:2:0, to name a few. Where the standards for the display and the decoded video data differ, chroma pixels for the display can be interpolated from two or more chroma pixels in the decoded video data. The chroma interpolation depends on the native format of the source video data.
Conventionally, after each horizontal synchronization pulse, the host processor calculates the address of the first pixels of a line and the parameters for chroma format conversion. The host processor then programs the display engine with the foregoing.
Programming the display engine at each horizontal synchronization pulse consumes considerable bandwidth from the host processor.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with embodiments presented in the remainder of the present application with references to the drawings.